package study.stack;

import study.link.LinkedList;

/**
 * @Classname LinkedStack   栈 使用 链表速度快  但是  1000万 以上 链表又慢了,是因为new 耗费性能。
 * @Author happytaohaha
 * @Date 2020/3/28
 * @Description TODO
 */
public class LinkedStack<E> implements Stack<E> {

    private LinkedList linkedList;

    public LinkedStack() {
        linkedList = new LinkedList<>();
    }

    @Override
    public int getSize() {
        return linkedList.getSize();
    }

    @Override
    public boolean isEmpty() {
        return linkedList.isEmpty();
    }
    /**
     * O（1）
     * @return
     */
    @Override
    public void push(E e) {
        linkedList.addFirst(e);
    }
    /**
     * O（1）
     * @return
     */
    @Override
    public E pop() {
        return (E) linkedList.removeFirst();
    }

    /**
     * O（1）
     * @return
     */
    @Override
    public E peek() {
        return (E) linkedList.getFirst();
    }

    @Override
    public String toString() {
        StringBuffer res = new StringBuffer();
        res.append("stack:");
        res.append(linkedList);
        return res.toString();
    }
}
